In [1]:
using Ising,Gadfly,DataFrames,LaTeXStrings
Lo primero es crear un ensamble
In [ ]:
ensamble = Ensamble((10,10,10),1/2.0)
Ajustar sus parámetros y ejecutar unos pasos, el resultado es un diccionario con los valores de Magnetización total y Energía.
In [49]:
ensamble.β=1/2.0
correSweeps(ensamble,800)
Out[49]:
In [2]:
Ls=[8:3:17]
df=Array(Any,length(Ls))
for i in 1:length(Ls)
resultados = open("resultadosSinCampo"*string(Ls[i])*".serial")
resultadoDeserializado=deserialize(resultados)
close(resultados)
resultadoDiccionario=Dict{ASCIIString,Any}(resultadoDeserializado)
df[i]=DataFrame(t=resultadoDiccionario["Ts"],M=reshape(resultadoDiccionario["Magnetizaciones"][1,:],length(resultadoDiccionario["Ts"])),
L=string(resultadoDiccionario["Ls"][1])* "^3")
end
df = vcat(df...);
set_default_plot_size(24cm, 16cm)
In [3]:
elplot=plot(df,x="t",y="M",color="L",Geom.line,Scale.color_discrete,Guide.xlabel("Temperatura"),Guide.ylabel("Magnetización"))
Out[3]:
In [4]:
Ls=[8:3:17]
df=Array(Any,length(Ls))
for i in 1:length(Ls)
resultados = open("resultadosSinCampo"*string(Ls[i])*".serial")
resultadoDeserializado=deserialize(resultados)
close(resultados)
resultadoDiccionario=Dict{ASCIIString,Any}(resultadoDeserializado)
df[i]=DataFrame(t=resultadoDiccionario["Ts"],M=reshape(resultadoDiccionario["calores"][1,:],length(resultadoDiccionario["Ts"])),
L=string(resultadoDiccionario["Ls"][1])* "^3")
end
df = vcat(df...);
In [5]:
elplot=plot(df,x="t",y="M",color="L",Geom.line,Scale.color_discrete,Guide.xlabel("Temperatura"),Guide.ylabel("Calor específico"))
Out[5]:
Prepara muchas ejecuciones, se barren las temperaturas entre 2.0 y 8.0 en pasos de 0.4, para sistemas de tamaños 5x5x5,9x9x9,13x13x13 y 17x17x17.
Se define el valor de el campo magnético en el campo H del objeto tipo Ensamble
De los datos obtenidos de cada simulación se calcula la magnetización por espín y el calor específico
In [6]:
m = open("resultadosConCampo.serial")
n=deserialize(m)
close(m)
d=Dict{ASCIIString,Any}(n)
df=Array(Any,length(d["Ls"]))
for i in 1:length(d["Ls"])
df[i]=DataFrame(t=d["Ts"],M=reshape(d["Magnetizaciones"][i,:],length(d["Ts"])),L=d["Ls"][i])
end
df = vcat(df...);
In [7]:
elplot=plot(df,x="t",y="M",color="L",Geom.line,Scale.color_discrete,Guide.xlabel("Temperatura"),Guide.ylabel("Magnetización"))
Out[7]:
In [8]:
m = open("resultadosConCampo.serial")
n=deserialize(m)
close(m)
d=Dict{ASCIIString,Any}(n)
df=Array(Any,length(d["Ls"]))
for i in 1:length(d["Ls"])
df[i]=DataFrame(t=d["Ts"],M=reshape(d["calores"][i,:],length(d["Ts"])),L=d["Ls"][i])
end
df = vcat(df...);
In [9]:
elplot=plot(df,x="t",y="M",color="L",Geom.line,Scale.color_discrete,Guide.xlabel("Temperatura"),Guide.ylabel("Calor específico"))
Out[9]:
In [10]:
ensamble = Ensamble((10,10,10),0.5)
Hs = 1.05:0.075:1.65
sweeps = 900
ensamble.β = 0.5
function magnetos(ensamble::Ensamble,Hs::Array{Float64},sweeps::Integer)
Ms = zeros(length(Hs),int(sweeps/10))
for H in 1:length(Hs)
ensamble.H = Hs[H]
ensamble.configuración = -1 * ones(17,17,17)
for i in 1:sweeps/10
Ms[H,i] = magnetizaciónensamble(ensamble)/length(ensamble.configuración)
correSweeps(ensamble,10)
end
end
return Ms
end
Ms = magnetos(ensamble,[Hs],sweeps)
dfs = DataFrame[]
for i in 1:size(Ms)[1]
df = DataFrame(sweeps=[10*(1:size(Ms)[2])],M=reshape(Ms[i,:],size(Ms)[2]),H=Hs[i])
push!(dfs,df)
end
datos = vcat(dfs);
In [11]:
plot(datos,x="sweeps",y="M",color="H",Geom.line,Scale.color_discrete)
Out[11]:
In [ ]:
a = Ensamble((17,17,17),0.5)
a.H=1.3
a.configuración= -1*ones(17,17,17);
microestado=reshape(a.configuración,length(a.configuración));
ar = open("pruebasAnima.dat","w")
for i in 1:370
correSweeps(a,1)
write(ar,string(microestado))
write(ar,'\n')
end
close(ar)
#Para crear el video se ejecuta
#python cubo.py
#rm imagenesVideo/Ising3D.webm
#ffmpeg -framerate 5 -i imagenesVideo/frame%06d.png -c:v libvpx imagenesVideo/Ising3D.webm
In [12]:
vid = open("imagenesVideo/Ising3D.webm","r")
vide = readbytes(vid)
vide64=base64(vide)
close(vid)
Simulación de un sistema de 17$^3$ con un campo H=1.35
In [13]:
display("text/html","<video controls> <source type=\"video/webm\" src=\"data:video/webm;base64,"*string(vide64)*"\"> </video>")